package com.deyuanyun.pic.settings.mapper.prvlg;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.deyuanyun.pic.settings.controller.dto.prvlg.UserExportVO;
import com.deyuanyun.pic.settings.controller.dto.prvlg.UserVO;
import com.deyuanyun.pic.settings.domain.org.OrgInfo;
import com.deyuanyun.pic.settings.domain.prvlg.User;
import com.github.pagehelper.Page;

public interface UserMapper {
    int deleteByPrimaryKey(String id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

    /**
     * 根据用户名查询该对象
     *
     * @param username
     * @return
     */
    List<User> getUser(String username);

    /**
     * 查询所有的公司
     * @return
     */
	List<OrgInfo> selectAllCompany();
	/**
	 * 查询公司的部门
	 * @param companyId
	 * @return
	 */
	List<OrgInfo> selectDepartmentByCompanyId(String companyId);
	/**
	 * 查询部门的职位
	 * @param departmentId
	 * @return
	 */
	List<OrgInfo> selectPositionByDepartmentId(String departmentId);
	/**
	 * 获取用户列表数据
	 * @param map 
	 * @return
	 */
	List<UserVO> getUserManagerIndex(Map<String, Object> map);
	/**
	 * 根据用户名称查询用户
	 * @param praMap
	 * @return
	 */
	String selectUserByUsername(Map<String, Object> praMap);
	/**
	 * 根据用户Id查询该用户配置的用户组
	 * @param id
	 * @return
	 */
	List<String> selectUserGroupByUserId(String id);
	/**
	 * 删除该用户所属的原有用户组
	 * @param id
	 * @return 
	 */
	int deleteAuthorize(String id);
	/**
	 * 保存用户和用户组授权信息
	 * @param userId
	 * @param userGroupId2
	 */
	void saveAuthorize(Map<String, Object> map);
	/**
	 * 根据用户组的id查询用户和用户组的关系
	 * @param id
	 * @return
	 */
	List<String> selectUserToGroupByGroupId(String id);
	/**
	 * 查询用户
	 * @param map
	 * @return
	 */
	List<UserVO> searchUser(Map<String, Object> map);

	List<UserVO> findList(Map<String, Object> map);
	
	UserVO searchUserDetail(Map map);

	/**
	 * 导出用户
	 * @param map
	 * @return
	 */
	List<LinkedHashMap<String, Object>> exportData(UserVO uv);

    
    Page<HashMap<String, Object>> findPage(HashMap param);
    /**
     * 根据公司名称查询公司
     * @param code
     * @return
     */
    OrgInfo selectCompanyByCompanyName(String name);
	/**
	 * 根据部门名称查询部门
	 * @param department
	 * @return
	 */
    OrgInfo selectDepartmentByDepartmentName(String name);
    /**
     * 根据职位名称查询职位
     * @param position
     * @return
     */
    OrgInfo selectPositionByPositionName(String name);
    /**
     * 独立清管导出用户
     * @param uv
     * @return
     */
	List<UserExportVO> exportUser(UserVO uv);
	
	/**
	 * 根据手机号查询用户
	 * @param mobile
	 * @param userId 
	 * @return
	 */
	User selectUserByMobile(Map<String, Object> map);
	
	/**
	 * 根据邮箱查询用户
	 * @param mobile
	 * @return
	 */
	User selectUserByEmail(Map<String, Object> map);
	
}